# _*_coding:utf-8 _*_
# @Time   :2020/6/24
from .models import *
from rest_framework import serializers
from django.contrib.auth.models import User


class InvCodeSerializer(serializers.ModelSerializer):
    class Meta:
        model = InvCode
        fields = '__all__'  # 字段名
        # fields = ('','')  # 设置包含哪些字段
        # exclude = ('image',)  # 设置排除哪些字段
        # read_only_fields = ('id', 'bread', 'bcomment')  # 仅用于序列化输出的字段，不可操作


"""
read_only
read_only表示只能读，不能进行修改。例如定义序列化器时，id字段通常指定read_only=True。在序列化时，即对象转为字典、JSON字符串时，字典、
JSON字符串包含着id字段。但是反序列化时，即JSON字符串、字典转换为对象时，在参数校验的时候，即使字典有id的键值对，校验不会出错，
但是校验后的数据不会有id这个字段，所以id也不会存进数据库。

write_only
write_only表示只能写，不能读。例如定义序列化器时，password字段（还有短信验证码等）通常指定write_only=True。在序列化时，即对象转为字典、
JSON字符串时，字典、JSON字符串不会包含着字段。但是反序列化时，即JSON字符串、字典转换为对象时，在参数校验的时候，校验通过，
而且校验后的数据有password这个字段，并且能存进数据库。
"""


class UserSerializer(serializers.ModelSerializer):
    """用户相关视图的序列化器"""

    class Meta:
        model = User  # 选定模型
        fields = ('pk', 'username', 'email', 'password')  # 选定字段
        # extra_kwargs参数为 ModelSerializer 添加或修改原有的选项参数
        extra_kwargs = {
            'password': {'write_only': True},
        }  # 不返回密码字段(password只能是写入数据库，不会返回到前端)


class Detail_infoSerializer(serializers.ModelSerializer):
    """Detail_info序列化器"""

    class Meta:
        model = Detail_info
        fields = "__all__"


class OrderListSerializer(serializers.ModelSerializer):
    """OrderList的序列化器"""

    class Meta:
        model = OrderList
        fields = "__all__"
